// https://www.luogu.com.cn/problem/P2249

#include <cstdio>
using namespace std;

int main() {
    int n, m;
    scanf("%d %d", &n, &m);

    int a[n + 1]; // 使用1-based索引，下标从1开始
    for (int i = 1; i <= n; ++i) {
        scanf("%d", &a[i]);
    }

    while (m--) {
        int q;
        scanf("%d", &q);

        // 二分查找：寻找第一个 >= q 的位置
        int left = 1, right = n; // 左右边界
        int pos = -1;     // 记录目标位置

        while (left <= right) {
            const int mid = (left + right) >> 1; // 等价于 (l + r) / 2，位运算更快

            if (a[mid] >= q) {
                pos = mid;  // 记录这个可能的位置
                right = mid - 1; // 继续向左找，看是否有更早的
            } else {
                left = mid + 1; // 向右找
            }
        }

        // 检查找到的位置的值是否真的是 q
        if (pos != -1 && a[pos] == q) {
            printf("%d ", pos);
        } else {
            printf("-1 ");
        }
    }

    return 0;
}